﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Configuration;
using System.Net.Mail;
using System.Text;
using System.Windows.Forms;
using QuanLiSinhVien_v01.GUI;
using QuanLiSinhVien_v01.BUS.Pattern;
using QuanLiSinhVien_v01.DTO;
using QuanLiSinhVien_v01.DAO;

namespace QuanLiSinhVien_v01.GUI
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
            Insert_UC_Destroy();
        }

        private InfoStrategy infoStrategy;
        private void sinhViênToolStripMenuItem_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfStudentStrategy();
            label1.Text = "Danh sách sinh viên";
            dataGridView1.DataSource = infoStrategy.Explore();
        }

        private void lớpHọcToolStripMenuItem_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfClassStrategy();
            label1.Text = "Danh sách lớp học";
            dataGridView1.DataSource = infoStrategy.Explore();
        }

        private void khoaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfFacultyStragety();
            label1.Text = "Danh sách ngành học";
            dataGridView1.DataSource = infoStrategy.Explore();
        }

        private void mônHọcToolStripMenuItem_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfSubjectStragety();
            label1.Text= "Danh sách môn học";
            dataGridView1.DataSource = infoStrategy.Explore();
        }

        private void tìmKiếmToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((ToolStripMenuItem)sender).Font = new Font("", 9, FontStyle.Bold);
            menuStrip1.Items[0].Font = new Font("", 9, FontStyle.Regular);
            menuStrip1.Items[2].Font = new Font("", 9, FontStyle.Regular);
            Insert_UC_Destroy();
            textBox1.Visible = true;
            button1.Visible = true;
            dataGridView1.DataSource = null;
            Clear();
        }

        private void thôngTinToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((ToolStripMenuItem)sender).Font = new Font("", 9, FontStyle.Bold);
            menuStrip1.Items[1].Font = new Font("", 9, FontStyle.Regular);
            menuStrip1.Items[2].Font = new Font("", 9, FontStyle.Regular);
            textBox1.Visible = false;
            label1.Text = "";
            button1.Visible = false;
            dataGridView1.DataSource = null;
            textBox1.Visible = false;
            button1.Visible = false;
            label1.Text = "";
            Insert_UC_Destroy();
            Clear();
        }

        private void thêmToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((ToolStripMenuItem)sender).Font = new Font("", 9, FontStyle.Bold);
            menuStrip1.Items[0].Font = new Font("", 9, FontStyle.Regular);
            menuStrip1.Items[1].Font = new Font("", 9, FontStyle.Regular);
            textBox1.Visible = false;
            button1.Visible = false;
            label1.Text = "";
            dataGridView1.DataSource = null;
            Insert_UC_Init_1st();
            //Insert_UC_Init();
        }

        private void Insert_UC_Init_1st()
        {
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = true;
            //button4.Visible = true;
            dataGridView1.Visible = false;
            //textBox1.Visible = false;
            button2.Visible = button3.Visible = false;
        }

        private void Main_Load(object sender, EventArgs e)
        {
            button1.Visible = false;
            textBox1.Visible = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
                dataGridView1.DataSource = infoStrategy.Search(textBox1.Text);
            textBox1.Text = null;
        }

        private void sinhViênToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfStudentStrategy();
            label1.Text = "Từ khóa sinh viên";
        }

        private void mônHọcToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfSubjectStragety(); 
            label1.Text = "Từ khóa môn học";
        }

        private void lớpHọcToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfClassStrategy();
            label1.Text = "Từ khóa lớp học";
        }

        private void khoaToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfFacultyStragety();
            label1.Text = "Từ khóa khoa";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Object obj = dataGridView1.CurrentRow;
            infoStrategy.Update(obj);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Object obj = dataGridView1.CurrentRow;
            infoStrategy.Delete(obj);
        }

        private void Insert_UC_Init()
        {
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = true;
            dataGridView1.Visible = false;
            //textBox1.Visible = false;
            button2.Visible = button3.Visible = false;
            if (radioButton1.Checked)
            {
                dateTimePicker1.Visible = true;
                textBox4.Visible = false;
            }
            else
            {
                dateTimePicker1.Visible = false;
                textBox4.Visible = true;
            }
        }

        private void Insert_UC_Destroy()
        {
            label2.Visible = label3.Visible = label4.Visible = label5.Visible = label6.Visible = false;
            textBox2.Visible = textBox4.Visible = textBox3.Visible = textBox5.Visible = textBox6.Visible = false;
            button4.Visible = false;
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = false;
            dateTimePicker1.Visible = false;
            dataGridView1.Visible = true;
            //textBox1.Visible = true;
            button2.Visible = button3.Visible = true;
        }
        private void Insert_SV_Init()
        {
            label2.Visible = label3.Visible = label4.Visible = label5.Visible = true;
            textBox2.Visible = textBox3.Visible = textBox5.Visible = true;
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = true;
            button4.Visible = true;
            label2.Text = "MSSV";
            label3.Text = "Họ tên";
            label4.Text = "Ngày sinh";
            label5.Text = "Ghi chú";
        }
        private void Insert_MonHoc_Init()
        {
            label2.Visible = label3.Visible = label4.Visible = label5.Visible = label6.Visible = true;
            textBox2.Visible = textBox3.Visible = textBox5.Visible = textBox6.Visible = true;
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = true;
            button4.Visible = true;
            label2.Text = "Mã môn học";
            label3.Text = "Tên môn học";
            label4.Text = "Credit number";
            label5.Text = "Mã học kỳ";
            label6.Text = "Ghi chú";
        }
        private void Insert_LopHoc_Init()
        {
            label2.Visible = label3.Visible = label4.Visible = label5.Visible = label6.Visible = true;
            textBox2.Visible = textBox3.Visible = textBox5.Visible = textBox6.Visible = true;
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = true;
            button4.Visible = true;
            label2.Text = "Mã lớp học";
            label3.Text = "Tên lớp học";
            label4.Text = "Mã khóa học";
            label5.Text = "Mã ngành";
            label6.Text = "Ghi chú";
        }
        private void Insert_Khoa_Init()
        {
            label2.Visible = label3.Visible = label4.Visible = true;
            textBox2.Visible = textBox3.Visible = true;
            radioButton1.Visible = radioButton2.Visible = radioButton3.Visible = radioButton4.Visible = true;
            button4.Visible = true;
            label2.Text = "Mã ngành";
            label3.Text = "Tên ngành";
            label4.Text = "Ghi chú";
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfStudentStrategy();
            Insert_UC_Destroy();
            Insert_UC_Init();
            Insert_SV_Init();            
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfSubjectStragety();
            Insert_UC_Destroy();
            Insert_UC_Init();
            Insert_MonHoc_Init();
        }

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfClassStrategy();
            Insert_UC_Destroy();
            Insert_UC_Init();
            Insert_LopHoc_Init();
        }

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            infoStrategy = new InfoOfFacultyStragety();
            Insert_UC_Destroy();
            Insert_UC_Init();
            Insert_Khoa_Init();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
                if (textBox2.Text != "" && textBox3.Text != "")
                {
                    SinhVienDto sv = new SinhVienDto();
                    sv.MSSV = textBox2.Text;
                    sv.HoTen = textBox3.Text;
                    sv.NgaySinh = DateTime.Parse(dateTimePicker1.Value.ToShortDateString());
                    sv.GhiChu = textBox5.Text;
                    SinhVienDao svDAO = new SinhVienDao();
                    if (svDAO.CheckExist(sv.MSSV))
                    {
                        MessageBox.Show("Mã số SV tồn tại!");
                        infoStrategy = new InfoOfStudentStrategy();
                        Insert_UC_Init();
                        Insert_SV_Init(); 
                    }
                    else
                    {
                        Object obj = sv;
                        infoStrategy.Insert(obj);
                        MessageBox.Show("Thêm thành công!");
                        Clear();
                    }
                }
            if (radioButton2.Checked)
                if (textBox2.Text != "" && textBox3.Text != "")
                {
                    MonHocDto monhoc = new MonHocDto();
                    monhoc.MaMonHoc = textBox2.Text;
                    monhoc.TenMonHoc = textBox3.Text;
                    try
                    {
                        monhoc.CreditNumber = Int32.Parse(textBox4.Text);
                    }
                    catch (Exception ex) {
                        monhoc.CreditNumber = 0;
                    }
                    monhoc.MaHocKy = textBox5.Text;
                    monhoc.GhiChu = textBox6.Text;
                    MonHocDao monhocDao = new MonHocDao();
                    if (monhocDao.CheckExist(monhoc.MaMonHoc))
                    {
                        MessageBox.Show("Mã môn học tồn tại!");
                        infoStrategy = new InfoOfSubjectStragety();
                        Insert_UC_Init();
                        Insert_MonHoc_Init(); 
                    }
                    else
                    {
                        Object obj = monhoc;
                        infoStrategy.Insert(obj);
                        MessageBox.Show("Thêm thành công!");
                        Clear();
                    }
                }
            if (radioButton3.Checked)
                if (textBox2.Text != "" && textBox3.Text != "" && textBox5.Text != "")
                {
                    LopHocDto lophoc = new LopHocDto();
                    lophoc.MaLopHoc = textBox2.Text;
                    lophoc.TenLopHoc = textBox3.Text;
                    lophoc.MaKhoaHoc = textBox4.Text;
                    lophoc.MaNganhHoc = textBox5.Text;
                    lophoc.GhiChu = textBox6.Text;
                    LopHocDao lophocDao = new LopHocDao();
                    if (lophocDao.CheckExist(lophoc.MaLopHoc))
                    {
                        MessageBox.Show("Mã lớp học tồn tại!");
                        infoStrategy = new InfoOfClassStrategy();
                        Insert_UC_Init();
                        Insert_LopHoc_Init();
                    }
                    else
                    {
                        Object obj = lophoc;
                        infoStrategy.Insert(obj);
                        MessageBox.Show("Thêm thành công!");
                        Clear();
                    }
                }
            if (radioButton4.Checked)
                if (textBox2.Text != "" && textBox3.Text != "")
                {
                    NganhDto nganh = new NganhDto();
                    nganh.MaNganh = textBox2.Text;
                    nganh.TenNganh = textBox3.Text;
                    nganh.GhiChu = textBox4.Text;
                    NganhDao nganhDao = new NganhDao();
                    if (nganhDao.CheckExist(nganh.MaNganh))
                    {
                        MessageBox.Show("Mã ngành tồn tại!");
                        infoStrategy = new InfoOfFacultyStragety();
                        Insert_UC_Init();
                        Insert_Khoa_Init();
                    }
                    else
                    {
                        Object obj = nganh;
                        infoStrategy.Insert(obj);
                        MessageBox.Show("Thêm thành công!");
                        Clear();
                    }
                }
        }

        private void nhậpĐiểmToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormNhapDiem  formNhapDiem = new FormNhapDiem();
            formNhapDiem.ShowDialog();
        }
        private void Clear()
        {
            textBox2.Text = textBox3.Text = textBox4.Text = textBox5.Text = textBox6.Text = "";
        }

    }
}
